// 
// $Rev:: 13            $:  Revision of last commit
// $Author:: rvhaverm@g#$:  Author of last commit
// $Date:: 2010-07-25 1#$:  Date of last commit
// 
package agents.messages;

import com.ibm.aglet.*;

import agents.configuration.IHostConfiguration;


/**
 * A factory class that can create new instances of TASMessages.
 * 
 * This class cannot be instantiated.
 * 
 * @author Ruben Van Havermaet
 * @version 0.2
 * 
 */
public class MessageFactory
{

    /**
     * private constructor: cannot instantiate class.
     */
    private MessageFactory()
    {
    }

    // /** Create a new ArrangeBookingMessage.
    // *
    // * @param h the hotel booking to book
    // * @param t the tc booking to book
    // * @return a new ArrangeBookingMessage
    // * @see agents.msgs.ArrangeBookingMessage
    // * @see agents.search.BookingHotel
    // * @see agents.search.BookingTC
    // */
    // public static ArrangeBookingMessage newArrangeBookingMessage(BookingHotel
    // h,
    // BookingTC t) {
    //                                  
    // return new ArrangeBookingMessage(h, t);
    // }

    // /** Create a new BackFromBookingMessage.
    // *
    // * @return a new BackFromBookingMessage
    // * @see agents.msgs.BackFromBookingMessage
    // */
    // public static BackFromBookingMessage newBackFromBookingMessage() {
    // return new BackFromBookingMessage();
    // }

    // /** Create a new BackWithOptionsMessage.
    // *
    // * @return a new BackWithOptionsMessage
    // * @see agents.msgs.BackWithOptionsMessage
    // */
    // public static BackWithOptionsMessage newBackWithOptionsMessage() {
    // return new BackWithOptionsMessage();
    // }
    //  
    //  
    // /** Create a new ConfirmHotelMessage.
    // *
    // * @param booking the hotelbooking to be confirmed.
    // * @return a new ConfirmHotelMessage
    // * @see agents.msgs.ConfirmHotelMessage
    // */
    // public static
    // ConfirmHotelMessage newConfirmHotelMessage(BookingHotel booking) {
    //    
    // return new ConfirmHotelMessage(booking);
    // }
    //  
    //  
    // /** Create a new ConfirmTCMessage.
    // *
    // * @param booking the tc-booking to be confirmed.
    // * @return a new ConfirmTCMessage.
    // * @see agents.msgs.ConfirmTCMessage
    // */
    // public static ConfirmTCMessage newConfirmTCMessage(BookingTC booking) {
    // return new ConfirmTCMessage(booking);
    // }

//    /**
//     * Create a new DBDeleteMessage.
//     * 
//     * @param table
//     *            the db-table
//     * @param cond
//     *            the condition
//     * @return a new DBDeleteMessage
//     * @see agents.msgs.DBDeleteMessage
//     */
//    public static DBDeleteMessage newDBDeleteMessage(String table, String cond)
//    {
//
//	return new DBDeleteMessage(table, cond);
//    }

//    /**
//     * Create a new DBInsertMessage.
//     * 
//     * @param table
//     *            the db-table
//     * @param cols
//     *            the attributes
//     * @param vals
//     *            the values for the attributes
//     * @return a new DBInsertMessage
//     * @see agents.msgs.DBInsertMessage
//     */
//    public static DBInsertMessage newDBInsertMessage(String table, String cols,
//	    String vals)
//    {
//
//	return new DBInsertMessage(table, cols, vals);
//    }
//
//    /**
//     * Create a new DBQueryMessage.
//     * 
//     * @param table
//     *            the db-table
//     * @param cols
//     *            the attributes to select
//     * @param cond
//     *            the condition that needs to be satified.
//     * @return a new DBQueryMessage
//     * @see agents.msgs.DBQueryMessage
//     */
//    public static DBQueryMessage newDBQueryMessage(String table, String cols,
//	    String cond)
//    {
//
//	return new DBQueryMessage(table, cols, cond);
//    }
//
//    /**
//     * Create a new DBUpdateMessage.
//     * 
//     * @param table
//     *            the db-table
//     * @param col
//     *            the attributes that need to be updated
//     * @param val
//     *            the new values for the attributes
//     * @param cond
//     *            the condition
//     * @return a new DBUpdateMessage
//     * @see agents.msgs.DBUpdateMessage
//     */
//    public static DBUpdateMessage newDBUpdateMessage(String table, String col,
//	    String val, String cond)
//    {
//
//	return new DBUpdateMessage(table, col, val, cond);
//    }

    // /** Create a new DeleteFromMainOfficeMessage.
    // *
    // * @param s the HostSpecs for the host that needs to be deleted.
    // * @return a new DeleteFromMainOfficeMessage
    // * @see agents.msgs.DeleteFromMainOfficeMessage
    // */
    // public static
    // DeleteFromMainOfficeMessage newDeleteFromMainOfficeMessage(HostSpecs s) {
    //    
    // return new DeleteFromMainOfficeMessage(s);
    // }
    //  
    //  
    // /** Create a new DeleteHotelMessage.
    // *
    // * @param specs the HostSpecsHotel of the hotel to be deleted.
    // * @return a new DeleteHotelMessage
    // * @see agents.msgs.DeleteHotelMessage
    // */
    // public static
    // DeleteHotelMessage newDeleteHotelMessage(HostSpecsHotel specs) {
    //    
    // return new DeleteHotelMessage(specs);
    // }
    //  
    //  
    // /** Create a new DeleteTCMessage.
    // *
    // * @param specs the HostSpecsTC of the tc to be deleted.
    // * @return a new DeleteTCMessage
    // * @see agents.msgs.DeleteTCMessage
    // */
    // public static DeleteTCMessage newDeleteTCMessage(HostSpecsTC specs) {
    // return new DeleteTCMessage(specs);
    // }
    //  
    //  
    // /** Create a new GetBookingsListMessage.
    // *
    // * @return a new GetBookingsListMessage
    // * @see agents.msgs.GetBookingsListMessage
    // */
    // public static GetBookingsListMessage newGetBookingsListMessage() {
    // return new GetBookingsListMessage();
    // }
    //  
    //  
    // /** Create a new GetHotelsMessage.
    // *
    // * @param sp the SearchParams with which the hotels must satisfy.
    // * @return a new GetHotelsMessage
    // * @see agents.msgs.GetHotelsMessage
    // */
    // public static GetHotelsMessage newGetHotelsMessage(SearchParams sp) {
    // return new GetHotelsMessage(sp);
    // }
    //  
    //  
    // /** Create a new GetSearchParamsMessage.
    // *
    // * @return a new GetSearchParamsMessage
    // * @see agents.msgs.GetSearchParamsMessage
    // */
    // public static GetSearchParamsMessage newGetSearchParamsMessage() {
    // return new GetSearchParamsMessage();
    // }

//    /**
//     * Create a new GetServiceMessage.
//     * 
//     * @param name
//     *            the name of the Service to get.
//     * @return a new GetServiceMessage
//     * @see agents.msgs.GetServiceMessage
//     */
//    public static GetServiceMessage newGetServiceMessage(String name)
//    {
//	return new GetServiceMessage(name);
//    }
//
//    /**
//     * Create a new GetSystemPropertiesMessage.
//     * 
//     * @return a new GetSystemPropertiesMessage
//     * @see agents.msgs.GetSystemPropertiesMessage
//     */
//    public static GetSystemPropertiesMessage newGetSystemPropertiesMessage()
//    {
//	return new GetSystemPropertiesMessage();
//    }
//
//    // /** Create a new GetTransportCompaniesMessage.
//    // *
//    // * @return a new GetTransportCompaniesMessage
//    // * @see agents.msgs.GetTransportCompaniesMessage
//    // */
//    // public static
//    // GetTransportCompaniesMessage newGetTransportCompaniesMessage() {
//    //    
//    // return new GetTransportCompaniesMessage();
//    // }
//
//    /**
//     * Create a new GetUIMessage.
//     * 
//     * @return a new GetUIMessage
//     * @see agents.msgs.GetUIMessage
//     */
//    public static GetUIMessage newGetUIMessage()
//    {
//	return new GetUIMessage();
//    }
//
//    /**
//     * Create a new PrintMessage.
//     * 
//     * @param text
//     *            the text to be displayed.
//     * @return a new PrintMessage
//     * @see agents.msgs.PrintMessage
//     */
//    public static PrintMessage newPrintMessage(String text)
//    {
//	return new PrintMessage(text);
//    }

    // /** Create a new QueryHotelMessage.
    // *
    // * @return a new QueryHotelMessage
    // * @see agents.msgs.QueryHotelMessage
    // */
    // public static QueryHotelMessage newQueryHotelMessage() {
    // return new QueryHotelMessage();
    // }
    //  
    //  
    // /** Create a new QueryHotelMessage.
    // *
    // * @param sps the SearchParams by which the found hotelbookings must be
    // * satisfied.
    // * @return a new QueryHotelMessage
    // * @see agents.msgs.QueryHotelMessage
    // */
    // public static QueryHotelMessage newQueryHotelMessage(SearchParams sps) {
    // return new QueryHotelMessage(sps);
    // }
    //  
    //  
    // /** Create a new QueryTCMessage.
    // *
    // * @return a new QueryTCMessage
    // * @see agents.msgs.QueryTCMessage
    // */
    // public static QueryTCMessage newQueryTCMessage() {
    // return new QueryTCMessage();
    // }
    //  
    //  
    // /** Create a new QueryTCMessage.
    // *
    // * @param sps the SearchParams by which the found tc-bookings must be
    // * satisfied.
    // * @return a new QueryTCMessage
    // * @see agents.msgs.QueryTCMessage
    // */
    // public static QueryTCMessage newQueryTCMessage(SearchParams sps) {
    // return new QueryTCMessage(sps);
    // }
    //  
    //  
    // /** Create a new RegisterHotelMessage.
    // *
    // * @param specs the specifications of the hotel that needs to be
    // registered.
    // * @return a new RegisterHotelMessage
    // * @see agents.msgs.RegisterHotelMessage
    // */
    // public static
    // RegisterHotelMessage newRegisterHotelMessage(HostSpecsHotel specs) {
    //    
    // return new RegisterHotelMessage(specs);
    // }

//    /**
//     * Create a new RegisterServiceMessage.
//     * 
//     * @param name
//     *            by convention the name of the service to be registered.
//     * @param agent
//     *            the AgletProxy representing the service to be registered.
//     * @return a new RegisterServiceMessage
//     * @see agents.msgs.RegisterServiceMessage
//     */
//    public static RegisterServiceMessage newRegisterServiceMessage(String name,
//	    AgletProxy agent)
//    {
//
//	return new RegisterServiceMessage(name, agent);
//    }

    // /** Create a new RegisterTCMessage.
    // *
    // * @param specs the specifications of the TC-host that needs to be
    // * registered.
    // * @return a new RegisterTCMessage
    // * @see agents.msgs.RegisterTCMessage
    // */
    // public static RegisterTCMessage newRegisterTCMessage(HostSpecsTC specs) {
    // return new RegisterTCMessage(specs);
    // }

//    /**
//     * Create a new RegisterWithMainOfficeMessage.
//     * 
//     * @param props
//     *            the properties of the host to be registered.
//     * @param specs
//     *            the specifications of the host to be registered.
//     * @return a new RegisterWithMainOfficeMessage
//     * @see agents.msgs.RegisterWithMainOfficeMessage
//     */
//    public static RegisterWithMainOfficeMessage newRegisterWithMainOfficeMessage(
//	    HostProperties props, HostSpecs specs)
//    {
//
//	return new RegisterWithMainOfficeMessage(props, specs);
//    }

//    /**
//     * Create a new ReportHomeMessage.
//     * 
//     * @param text
//     *            the text that is sent home.
//     * @return a new ReportHomeMessage
//     * @see agents.msgs.ReportHomeMessage
//     */
//    public static ReportHomeMessage newReportHomeMessage(String text)
//    {
//	return new ReportHomeMessage(text);
//    }
//
//    // /** Create a new SearchHotelsAndTCMessage.
//    // *
//    // * @return a new SearchHotelsAndTCMessage
//    // * @see agents.msgs.SearchHotelsAndTCMessage
//    // */
//    // public static SearchHotelsAndTCMessage newSearchHotelsAndTCMessage() {
//    // return new SearchHotelsAndTCMessage();
//    // }
//
//    /**
//     * Create a new SetInitPlanMessage.
//     * 
//     * @param host
//     *            the location of the first host to be dispatched to.
//     * @param job
//     *            the Message that needs to be handled at the remote host.
//     * @return a new SetInitPlanMessage
//     * @see agents.msgs.SetInitPlanMessage
//     */
//    public static SetInitPlanMessage newSetInitPlanMessage(String host,
//	    Message job)
//    {
//
//	return new SetInitPlanMessage(host, job);
//    }
//
//    /**
//     * Create a new SetInteractiveUIMessage.
//     * 
//     * @param receptionist
//     *            the AgletProxy representing the local receptionist.
//     * @return a new SetInteractiveUIMessage
//     * @see agents.msgs.SetInteractiveUIMessage
//     */
//    public static SetInteractiveUIMessage newSetInteractiveUIMessage(
//	    AgletProxy receptionist)
//    {
//
//	return new SetInteractiveUIMessage(receptionist);
//    }
//
//    /**
//     * Create a new SetReceptionistMessage.
//     * 
//     * @param receptionist
//     *            the AgletProxy representing the local receptionist.
//     * @return a new SetReceptionistMessage
//     * @see agents.msgs.SetReceptionistMessage
//     */
//    public static SetReceptionistMessage newSetReceptionistMessage(
//	    AgletProxy receptionist)
//    {
//
//	return new SetReceptionistMessage(receptionist);
//    }

    // /** Create a new SetSearchParamsMessage.
    // *
    // * @param p the SearchParams to be installed
    // * @return a new SetSearchParamsMessage
    // * @see agents.msgs.SetSearchParamsMessage
    // */
    // public static SetSearchParamsMessage
    // newSetSearchParamsMessage(SearchParams p) {
    // return new SetSearchParamsMessage(p);
    // }

    /**
     * Create a new SetSystemPropertiesMessage.
     * 
     * @param configuration
     *            the properties to be installed
     * @return a new SetSystemPropertiesMessage
     * @see agents.msgs.SetSystemPropertiesMessage
     */
    public static SetSystemPropertiesMessage CreateSetSystemPropertiesMessage(
	    IHostConfiguration configuration)
    {

	return new SetSystemPropertiesMessage(configuration);
    }

//    /**
//     * Create a new ShutDownMessage.
//     * 
//     * @return a new ShutDownMessage
//     * @see agents.msgs.ShutDownMessage
//     */
//    public static ShutDownMessage newShutDownMessage()
//    {
//	return new ShutDownMessage();
//    }
//
//    /**
//     * Create a new ShuttingDownMessage.
//     * 
//     * @return a new ShuttingDownMessage
//     * @see agents.msgs.ShuttingDownMessage
//     */
//    public static ShuttingDownMessage newShuttingDownMessage()
//    {
//	return new ShuttingDownMessage();
//    }
//
//    /**
//     * Create a new UpdateAgentListMessage
//     * 
//     * @return a new UpdateAgentListMessage
//     * @see agents.msgs.UpdateAgentListMessage
//     */
//    public static UpdateAgentListMessage newUpdateAgentListMessage()
//    {
//	return new UpdateAgentListMessage();
//    }
}
